<?php
require_once 'Register.php';
require_once 'RegisterView.php';
require_once 'ErrorView.php';

class RegisterController
{
	private $m_database = NULL;
	private $m_tablePrefix = NULL;

    public function __construct(DatabaseConnection $database)
    {
        $this->m_database = $database;
		$this->m_tablePrefix = $database->getTablePrefix();
    }

	public function doControll()
	{
		$xhtml = "";

		// Skapar instanser av Register (modell) och RegisterView.
		$Register = new Register($this->m_database);
		$RegisterView = new RegisterView();
		$ev = new ErrorView();
		
		// Har användaren valt att registrera sig?
		if ($RegisterView->triedToRegister() == true)
		{
			if($RegisterView->validateInput($RegisterView->getUsername(), 
			$RegisterView->getPassword(), $RegisterView->getPasswordMatch()) == false)
			{
				// Presentera meddelande: Inga fält får vara tomma.
				$xhtml .= $ev->showMessage(8, "error");
			}
			else if ($RegisterView->doesPasswordMatch($RegisterView->getPassword(), 
			$RegisterView->getPasswordMatch()) == false)
			{
				// Presentera meddelande: Lösenordna matchar inte.
				$xhtml .= $ev->showMessage(7, "error");
			}
			// Kontrollerar om användaren redan finns.
			else if ($Register->doesUserExist($RegisterView->getUsername()) == true)
			{
				// Presentera meddelande: Användaren finns inte.
				$xhtml .= $ev->showMessage(6, "error");
			}
			else
			{
				// Skapa användaren.
				$Register->createUser($RegisterView->getUsername(), $RegisterView->getPassword());

				// Presentera meddelande: Användare skapad, var god logga in.
				$xhtml .= $ev->showMessage(5, "good");	
			}
		}
		
		// Visa ett registreringsformulär.
		$xhtml .= $RegisterView->doRegisterForm(); 
	   
		return $xhtml;
	}
}
